package com.zenagro.domain.zenagro;

// No beginning comment snippet from this extension MP-MANAGED-ADDED-AREA-BEGINNING @import@// No ending comment snippet from this extension 
// No beginning comment snippet from this extension MP-MANAGED-ADDED-AREA-ENDING @import@// No ending comment snippet from this extension 
import java.sql.*;
import java.util.Date;
import java.util.List;
import java.util.ArrayList;
import java.util.Set;
import java.util.HashSet;

import javax.persistence.*;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;

import org.openxava.annotations.*;

import com.zenagro.domain.zenagro.Agricultor;
import com.zenagro.domain.zenagro.base.*;

/**
 *
 * <p>Title: Almacen</p>
 *
 * <p>Description: Domain Object describing a Almacen entity</p>
 *
 */
@Entity (name="Almacen")
@Table (name="almacen", uniqueConstraints={@UniqueConstraint(columnNames={"cif"})})
@View(name="reference",members=" nombre  ; cif  ; ")
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Almacen extends Identificable{

    @Required
    @Column(name="nombre",  nullable=false,  unique=false)
    private String nombre;

    @Required
    @Column(name="cif", nullable=false,  unique=true)//  length=15, 
    private String cif;

    @Column(name="direccion",nullable=true,  unique=false)//  length=500,  
    private String direccion;

    @Column(name="tlf",    nullable=true,  unique=false)
    private Long tlf;
    
    @Column(name="fax",    nullable=true,  unique=false)
    private Long fax;

    @Column(name="nombre_responsable",   nullable=true,  unique=false)// length=256,
    private String nombreResponsable;

    @Column(name="telefono_resp",    nullable=true,  unique=false)
    private Long telefonoResp;

    @Stereotype("EMAIL")
    @Column(name="email_responsable", nullable=true,  unique=false)//  length=100, 
    private String emailResponsable;

    @Column(name="forma_pago",  nullable=true,  unique=false)// length=45, 
    private String formaPago;

    @Column(name="descuentos_aplicados", nullable=true,  unique=false)//  length=45, 
    private String descuentosAplicados;

    @Column(name="ccc_iban",  nullable=true,  unique=false)//  length=45,
    private String cccIban;

    @OneToMany (targetEntity=com.zenagro.domain.zenagro.Agricultor.class, fetch=FetchType.LAZY, mappedBy="almacenId", cascade=CascadeType.REMOVE)//, cascade=CascadeType.ALL)
    private Set <Agricultor> agricultores = new HashSet<Agricultor>(); 

    public Almacen() {
    }

    
   public String getNombre() {
        return nombre;
    }
	
    public void setNombre (String nombre) {
        this.nombre =  nombre;
    } 

    public String getCif() {
        return cif;
    }
	
    public void setCif (String cif) {
        this.cif =  cif;
    } 

    public String getDireccion() {
        return direccion;
    }
	
    public void setDireccion (String direccion) {
        this.direccion =  direccion;
    } 

    public Long getFax() {
        return fax;
    }
	
    public void setFax (Long fax) {
        this.fax =  fax;
    } 

    public String getNombreResponsable() {
        return nombreResponsable;
    }
	
    public void setNombreResponsable (String nombreResponsable) {
        this.nombreResponsable =  nombreResponsable;
    } 

    public Long getTelefonoResp() {
        return telefonoResp;
    }
	
    public void setTelefonoResp (Long telefonoResp) {
        this.telefonoResp =  telefonoResp;
    } 

    public String getEmailResponsable() {
        return emailResponsable;
    }
	
    public void setEmailResponsable (String emailResponsable) {
        this.emailResponsable =  emailResponsable;
    } 

    public String getFormaPago() {
        return formaPago;
    }
	
    public void setFormaPago (String formaPago) {
        this.formaPago =  formaPago;
    } 

    public String getDescuentosAplicados() {
        return descuentosAplicados;
    }
	
    public void setDescuentosAplicados (String descuentosAplicados) {
        this.descuentosAplicados =  descuentosAplicados;
    } 

    public String getCccIban() {
        return cccIban;
    }
	
    public void setCccIban (String cccIban) {
        this.cccIban =  cccIban;
    } 


    public Set<Agricultor> getAgricultores() {
        if (agricultores == null){
            agricultores = new HashSet<Agricultor>();
        }
        return agricultores;
    }

    public void setAgricultores (Set<Agricultor> agricultores) {
        this.agricultores = agricultores;
    }	
    
    public void addAgricultores (Agricultor agricultor) {
    	getAgricultores().add(agricultor);
    }


	public Long getTlf() {
		return tlf;
	}


	public void setTlf(Long tlf) {
		this.tlf = tlf;
	}
    
    
 
}
